#!/usr/bin/env python
"""
初始化数据脚本
用于创建默认的活动分类和测试奖品
"""

import os
import django

# 设置Django环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Meet.settings')
django.setup()

from activities.models import ActivityCategory
from points.models import Reward


def create_categories():
    """创建默认活动分类"""
    categories = [
        {'name': '运动健身', 'description': '跑步、健身、球类运动等', 'icon': 'bi-bicycle', 'is_default': True},
        {'name': '学习交流', 'description': '读书会、技术分享、语言学习等', 'icon': 'bi-book', 'is_default': True},
        {'name': '聚会娱乐', 'description': '聚餐、K歌、桌游等', 'icon': 'bi-cup', 'is_default': True},
        {'name': '户外旅行', 'description': '徒步、露营、旅游等', 'icon': 'bi-tree', 'is_default': True},
        {'name': '艺术文化', 'description': '展览、音乐会、戏剧等', 'icon': 'bi-palette', 'is_default': True},
        {'name': '公益活动', 'description': '志愿服务、环保活动等', 'icon': 'bi-heart', 'is_default': True},
    ]
    
    created_count = 0
    for cat_data in categories:
        category, created = ActivityCategory.objects.get_or_create(
            name=cat_data['name'],
            defaults={
                'description': cat_data['description'],
                'icon': cat_data['icon'],
                'is_default': cat_data['is_default']
            }
        )
        if created:
            created_count += 1
            print(f"✓ 创建分类: {category.name}")
        else:
            print(f"- 分类已存在: {category.name}")
    
    print(f"\n共创建 {created_count} 个新分类")
    return created_count


def create_rewards():
    """创建测试奖品"""
    rewards = [
        {
            'name': '10元优惠券',
            'description': '可用于任意活动报名，有效期30天',
            'type': 'coupon',
            'points_required': 100,
            'stock': 50,
            'is_active': True
        },
        {
            'name': '20元优惠券',
            'description': '可用于任意活动报名，有效期30天',
            'type': 'coupon',
            'points_required': 180,
            'stock': 30,
            'is_active': True
        },
        {
            'name': '提前报名特权',
            'description': '可提前1天报名热门活动，有效期7天',
            'type': 'privilege',
            'points_required': 200,
            'stock': 30,
            'is_active': True
        },
        {
            'name': 'VIP会员月卡',
            'description': '享受平台VIP特权30天',
            'type': 'privilege',
            'points_required': 500,
            'stock': 20,
            'is_active': True
        },
        {
            'name': '精美礼品',
            'description': '平台定制周边礼品（随机发放）',
            'type': 'physical',
            'points_required': 500,
            'stock': 10,
            'is_active': True
        },
        {
            'name': '限量版T恤',
            'description': '本地有约限量版纪念T恤',
            'type': 'physical',
            'points_required': 800,
            'stock': 5,
            'is_active': True
        },
    ]
    
    created_count = 0
    for reward_data in rewards:
        reward, created = Reward.objects.get_or_create(
            name=reward_data['name'],
            defaults=reward_data
        )
        if created:
            created_count += 1
            print(f"✓ 创建奖品: {reward.name} ({reward.points_required}积分)")
        else:
            print(f"- 奖品已存在: {reward.name}")
    
    print(f"\n共创建 {created_count} 个新奖品")
    return created_count


def main():
    """主函数"""
    print("=" * 60)
    print("本地有约 - 初始化数据")
    print("=" * 60)
    print()
    
    print("1. 创建活动分类...")
    print("-" * 60)
    create_categories()
    print()
    
    print("2. 创建测试奖品...")
    print("-" * 60)
    create_rewards()
    print()
    
    print("=" * 60)
    print("初始化完成！")
    print("=" * 60)


if __name__ == '__main__':
    main()
